//*****************************************************************************
// Classification:   UNCLASSIFIED//FOUO
//
// NAME:  GeoidzShape.java
//
// AUTHOR/DATE:  Mark  12/15/11
//
// DESCRIPTION: Encapsulates functionality and properties for a generic shape
//                to be rendered in the Geoidz environment. Basically acts as
//                a wrapper around WorldWind shapes and shape attributes.
//
//
//*****************************************************************************

/*Expression selection is undefined on line 12, column 5 in Templates/Classes/Class.java.*/
package com.mark.geoidz.modules.geoidz_Core.shapes;

import com.mark.geoidz.modules.geoidz_Core.shapes.GeoidzShapeFactory.ShapeType_e;
import gov.nasa.worldwind.render.RigidShape;
import gov.nasa.worldwind.render.ShapeAttributes;

/**
 *
 * @author Mark
 */
public abstract class GeoidzShape
{
   // <editor-fold defaultstate="expanded" desc="Private Members">

   protected RigidShape mShape = null;
   protected ShapeAttributes mAttributes = null;
   protected ShapeType_e mType = null;

   // </editor-fold>

   // <editor-fold defaultstate="expanded" desc="Constructor(s)">

   protected GeoidzShape(ShapeType_e aType)
   {
      mType = aType;
   }

   // </editor-fold>

   // <editor-fold defaultstate="expanded" desc="Working Functions">

   /**
    * Initializes this shape with appropriate attributes
    */
   protected abstract void initShape(Object ... aInitialAttributes);

   // </editor-fold>


   // <editor-fold defaultstate="expanded" desc="Properties">

   public RigidShape getWorldWindShape()
   {
      return mShape;
   }
   
   /**
    * Gets the attributes associated with this shape
    * @return ShapeAttributes associated with this shape
    */
   public ShapeAttributes getAttributes()
   {
      return mAttributes;
   }

   // </editor-fold>
}
